package com.jiantong.work.service;

import com.jiantong.work.model.BreedReportsForm;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/4/11.
 *
 */
public interface BreedReportsFormReadService {

    /**
     * 根据动物种类分类 查询合计
     * @param start 从日期
     * @param end 到日期
     * @param breedFactoryId 养殖场ID
     * @return List<Object>
     */
    Response<List<Map<String , BigDecimal>>> findSumGroupByBreedType(Date start , Date end , Long breedFactoryId);

    /**
     * 查询合计--申报数、合格数、不合格数
     * @param start 从日期
     * @param end 到日期
     * @param breedType 产品种类
     * @return List<Object>
     */
    Response<List<Map<String , BigDecimal>>> findSum(Date start , Date end , Integer breedType);

    /**
     * 查询合计--根据申报的去向
     * @param start 从日期
     * @param end 到日期
     * @param breedType 产品种类
     * @return List<Object>
     */
    Response<List<Map<String , Integer>>> findSumByIsToLocal(Date start , Date end ,Integer breedType);

    /**
     * 查询合计--本地屠宰去向
     * @param start 从日期
     * @param end 到日期
     * @param breedType 产品种类
     * @return List<Object>
     */
    Response<List<Map<String , BigDecimal>>> findSumGroupByButcherFactory(Date start , Date end,Integer breedType);

    /**
     * 查询合计--区域来源分布
     * @param start 从日期
     * @param end 到日期
     * @param breedType 产品种类
     * @return List<Object>
     */
    Response<List<Map<String , BigDecimal>>> findSumGroupByBreedFactoryTown(Date start , Date end ,Integer breedType);

    /**
     * 分页查询
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param start 从日期
     * @param end 到日期
     * @return Paging<BreedReportsForm>
     */
    Response<Paging<BreedReportsForm>> pagingBreedReportsForm(Integer pageNo , Integer pageSize ,Date start , Date end , Integer breedType);

    /**
     * 报表详情
     * @param id 主键id
     * @return BreedReportsForm
     */
    Response<BreedReportsForm> findById(Long id);

    /**
     * 产地检疫总体情况
     * @return
     */
    Response<List<Map>> cdjy(Map criteria);

    /**
     * 本地检疫数
     * @return
     */
    Response<Integer> local(Map criteria);

    Response<List<Map>> localbutcher(Map criteria);

    Response<BreedReportsForm> findByReportId(Long reportId);

    /**
     * 分页查询
     * @param criteria 参数
     * @return Paging<BreedReportsForm>
     */
    Response<Paging<BreedReportsForm>> pagingBreedReportsFormForWeb(Integer pageNo, Integer pageSize,Map<String , Object> criteria);


    Response<List<BreedReportsForm>> listBreedReportsFormForWeb(Map<String , Object> map);
}
